package com.xmut.mall.search.service;

import com.xmut.mall.search.es.document.product.Attrs;
import com.xmut.mall.search.es.document.product.ProductESPojo;
import com.xmut.mall.search.searchparam.ProductSearchParam;
import com.xmut.mall.search.to.AttrEntityTo;
import com.xmut.mall.search.to.BrandEntityTo;
import com.xmut.mall.search.utils.RespBean;
import com.xmut.mall.search.vo.ProductVo;

import java.util.List;
import java.util.Map;

public interface ProductService {
    /**
     * ES商品上架
     * @param skuEsModels
     * @return
     */
    boolean productUp(List<ProductESPojo> skuEsModels);

    /**
     * 根据分类Id获取商品
     * @param cateId
     * @return
     */
    List<ProductESPojo> getProductByCateId(Long cateId);

    /**
     * 根据搜索框输入的KeyWord获取商品的可检索attr属性
     * @param keyword
     * @return
     */
    List<AttrEntityTo> getProductAttrByKeyWord(String keyword);

    /**
     * 根据输入框输入的KeyWord获取商品列表
     * @param keyword
     * @return
     */
    List<ProductESPojo> getProductByKeyWord(String keyword);

    /**
     * 使用keyword获取可进行检索的品牌信息
     * @param keyword
     * @return
     */
    List<BrandEntityTo> getProductBrandByKeyWord(String keyword);

    /**
     * 根据skuId获取商品的所属品牌
     * @param skuId
     * @return
     */
    String getProductBrandNameBySkuId(Long skuId);

    /**
     * 根据skuId获取商品信息
     * @param skuId
     * @return
     */
    ProductESPojo getProductBySkuId(Long skuId);

    /**
     * 根据skuId获取商品详细信息
     * @param skuId
     * @return
     */
    ProductVo getProductDetailVoBySkuId(Long skuId);

    /**
     * 获取所有商品
     * @return
     */
    List<ProductESPojo> getAllProduct();

    /**
     * 快捷重置文档接口
     * @return
     */
    RespBean deleteDocument();

    /**
     * 商品下架
     * @param skuIds
     * @return
     */
    boolean productOFF(List<Long> skuIds);

    /**
     * 根据搜索的keyword获取商品的分页参数
     * @param param
     * @return
     */
    RespBean getProductPageByKeyWord(ProductSearchParam param);

    /**
     * 根据cateId搜索ES商品
     * @param param
     * @return
     */
    RespBean getProductPageByCateId(ProductSearchParam param);
}
